const { defineConfig } = require('@vue/cli-service')
const path = require('path')
function resolve(dir) {
  return path.join(__dirname, '.', dir)
}

const { modifyVars } = require('./src/styles/index')
const { NODE_ENV, VUE_APP_TITLE, VUE_APP_LOGO } = process.env;


module.exports = defineConfig({
  
  transpileDependencies: true,
  // optimization: {
  //   nodeEnv: false
  // },
  publicPath: NODE_ENV === 'development'? '/': './',
  productionSourceMap: false,
  assetsDir: 'static',
  devServer: { // 开发环境相关配置
    port: '9000',
    proxy: {
      '/api': {
        // target: 'http://10.18.4.41:8081/', // 开发环境
        target: 'http://10.18.4.1:8051/', // 测试环境
        // target: 'http://172.26.7.193:8081/', // 快乐
        // target: 'http://172.26.7.146:8081/', // 杨满想
        // target: 'http://172.26.7.180:8081/', //  吴郭炎
        // target: 'http://172.26.7.41:8081', // liuqian
        // target: 'http://172.26.4.114:8081/', // 样板间
        // target: 'http://172.26.4.116:8081/', // 徐哥调试
        // target: 'http://10.18.34.11:8081/', // 测试环境-hou
        // target: 'http://172.26.4.145:8081/', // 测试环境--hou
        // target: 'http://192.168.0.193:8091', // 物联网本地
        // target: 'http://192.168.0.193:8092', // 物联网云端 
        ws: false,
        changeOrigin: true
      },
      '/websocket': {
        // target: 'http://172.26.4.33:8081/',
        target: 'http://10.18.34.11:8081/', // 开发 hou
        // target: 'http://192.168.3.197:8081/', // 开发-靓仔
        ws: true,
        changeOrigin: true
      }
    },
    // client: {
    //   webSocketURL: 'ws://localhost:9000/',
    // }
  },
  configureWebpack: config => {
    // 为生产环境修改配置...
    if (NODE_ENV !== 'development') {
      config.mode = 'production';
      // 打包文件大小配置
      config.performance = {
        maxEntrypointSize: 10000000,
        maxAssetSize: 30000000
      }
    }
  },
  pluginOptions: {
    'style-resources-loader': {
      preProcessor: 'less',
      patterns: [
        path.resolve(__dirname, `./src/styles/${VUE_APP_TITLE}.less`)
      ]
    },
  },
  chainWebpack: config => {
    config.resolve.alias.set('vue-i18n', 'vue-i18n/dist/vue-i18n.cjs.js')
    config.module.rules.delete("svg"); //重点:删除默认配置中处理svg,
    config.module
      .rule('svg-sprite-loader')
      .test(/\.svg$/)
      .include
      .add(resolve('src/icons')) //处理svg目录
      .end()
      .use('svg-sprite-loader')
      .loader('svg-sprite-loader')
      .options({
        symbolId: 'icon-[name]'
      })

    config.plugin('html')
      .tap(args => {
        args[0].title = VUE_APP_TITLE;
        args[0].favicon = VUE_APP_LOGO;
        return args;
      })
  },
  css: {
    loaderOptions: {
      less: {
        lessOptions: {
          modifyVars: modifyVars(),
          javascriptEnabled: true,
        }
      }
    }
  }
})  
